Skip to main content

GitLab CI/CD Back-end en DigitalOcean

Pipeline (.gitlab-ci.yml)

Fuentes:

Get started with GitLab CI/CD

GitLab CI/CD examples

Ejemplo

¿Cómo empezar?

Dirígete a Build > Pipelines.

¿Qué es un pipeline en GitLab?

Los pipelines en GitLab son flujos de trabajo automatizados que facilitan la integración continua y la entrega continua de software.

img

Ejemplo básico

Aquí se muestra un archivo básico de configuración que describe los procesos y los niveles en los que se ejecutan. Los estados escogidos son:

  • build
  • test
  • deploy

La estructura del código se compone de varias partes:

  1. El nombre del estado (por ejemplo, build-job).
  2. El nivel en el que se va a ejecutar (build, test, deploy).
  3. Acciones a realizar: Puedes agregar un before_script o script. before_script se ejecuta antes de script, como por ejemplo conectarse por SSH y luego hacer pull.

Cada estado se ejecuta en orden, siempre que todos los anteriores hayan pasado correctamente. Como se muestra en la imagen, aparece un #id : nombre del estado.

# Lista de etapas para los trabajos, y su orden de ejecución
stages:
- build
- test
- deploy

# Este trabajo se ejecuta en la etapa de construcción, que se ejecuta primero.
build-job:
stage: build
before_script:
- echo "Antes de compilar haz esto"
script:
- echo "Compilando el código..."
- echo "Compilación completa."

unit-test-job: # Este trabajo se ejecuta en la etapa de prueba.
stage: test # Solo comienza cuando el trabajo en la etapa de construcción se completa con éxito.
script:
- echo "Ejecutando pruebas unitarias... Esto tomará aproximadamente 60 segundos."
- sleep 60
- echo "La cobertura de código es del 90%"

lint-test-job: # Este trabajo también se ejecuta en la etapa de prueba.
stage: test # Puede ejecutarse al mismo tiempo que `unit-test-job` (en paralelo).
script:
- echo "Linting code... Esto tomará aproximadamente 10 segundos."
- sleep 10
- echo "No se encontraron problemas de lint."

deploy-job: # Este trabajo se ejecuta en la etapa de despliegue.
stage: deploy # Solo se ejecuta cuando *ambos* trabajos en la etapa de prueba se completan con éxito.
environment: production
script:
- echo "Desplegando la aplicación..."
- echo "Aplicación desplegada con éxito."

Después de crear este archivo, se generará una entrada en el pipeline del commit que se hizo.

  1. Puedes ver los commits y cómo avanzan los pasos. img
  2. Puedes ver qué se activa en cada commit. img
  3. Si seleccionas algún JOB, verás que es posible observar qué hace en la terminal. img img

¿Cómo evitar que se mande a deploy dependiendo de la rama?

deploy-job:
stage: deploy
environment: production
script:
- echo "Desplegando la aplicación..."
- echo "Aplicación desplegada con éxito."
only:
- main # solo en la rama main
- merge_requests # cuando hagan merge a main también

img

Se hizo merge de develop a main en local y vemos que en los stages ya son los 3 y no 2.

img

Para aprender a configurar tu servidor en DigitalOcean

Sigue estos pasos detallados en Miro.